unsigned int
t_hash (char *data, unsigned int cle)
{
  unsigned int resultat = 0, i;
  if (!cle)
    return 0;
  for (i = 0; data[i + 1] != 0; i++)
    resultat +=
      (((data[i] * data[i + 1]) % cle) << ((i + (cle / data[i])) % 5));
  return (resultat);
}

unsigned int
t_hash_high (char *data, unsigned int cle)
{
  unsigned int resultat = 0, i;
  if (!cle)
    return 0;
  for (i = 0; data[i + 1] != 0; i++)
    resultat +=
      (((data[i] * data[i + 1] * (i * i * 3)) %
	cle) << ((i + (cle / data[i])) % 5));
  return (resultat);
}
